getwd()
setwd("/media/jcolner/My Passport1/City Ordinance Files/Methodology Paper/Replication/Replication Attempt 1")
getwd()


#### Load Libraries and Data ####
library(readxl)
library(dplyr)
library(stringr)
library(tidyverse)
library(writexl)
library(ggplot2)
library(lubridate)
library(ggforce)
library(grid)
library(RColorBrewer)
library(textreuse)
library(purrr)
library(quanteda)
library(stringdist)
library(gt)

# Load the Object Detection Version
SantaRosa<- read_xlsx(path="Step 6/Manuscript Data/Santa Rosa Merged.xlsx")
Temecula<- read_xlsx(path="Step 6/Manuscript Data/Temecula Merged.xlsx")
ChulaVista<- read_xlsx(path="Step 6/Manuscript Data/Chula Vista Merged.xlsx")
SouthSanFrancisco<- read_xlsx(path="Step 6/Manuscript Data/South San Francisco Merged.xlsx")
Visalia<- read_xlsx(path="Step 6/Manuscript Data/Visalia Merged.xlsx")

#### Text Comparison  ####
# Load comparison files for each city
compare_text_SLV_chulavista<- read_xlsx(path="Step 6/Manuscript Data/Chula Vista Compare Text SLV.xlsx")
compare_text_ODV_chulavista<- read_xlsx(path="Step 6/Manuscript Data/Chula Vista Compare Text ODV.xlsx")

compare_text_SLV_temecula<- read_xlsx(path="Step 6/Manuscript Data/Temecula Compare Text SLV.xlsx")
compare_text_ODV_temecula<- read_xlsx(path="Step 6/Manuscript Data/Temecula Compare Text ODV.xlsx")

compare_text_SLV_southsanfrancisco<- read_xlsx(path="Step 6/Manuscript Data/South San Francisco Compare Text SLV.xlsx")
compare_text_ODV_southsanfrancisco<- read_xlsx(path="Step 6/Manuscript Data/South San Francisco Compare Text ODV.xlsx")

compare_text_SLV_visalia<- read_xlsx(path="Step 6/Manuscript Data/Visalia Compare Text SLV.xlsx")
compare_text_ODV_visalia<- read_xlsx(path="Step 6/Manuscript Data/Visalia Compare Text ODV.xlsx")

compare_text_SLV_santarosa<- read_xlsx(path="Step 6/Manuscript Data/Santa Rosa Compare Text SLV.xlsx")
compare_text_ODV_santarosa<- read_xlsx(path="Step 6/Manuscript Data/Santa Rosa Compare Text ODV.xlsx")

# generate measures of accuracy based on number of items from one set of agenda items found in the other
compare_text_all <- data.frame(City=c("Chula Vista","Temecula","South San Francisco", "Visalia","Santa Rosa"),
                               Accuracy = c(length(compare_text_ODV_chulavista$In_SLV[compare_text_ODV_chulavista$In_SLV=="Yes"])/length(compare_text_ODV_chulavista$In_SLV),
                                            length(compare_text_ODV_temecula$In_SLV[compare_text_ODV_temecula$In_SLV=="Yes"])/length(compare_text_ODV_temecula$In_SLV),
                                            length(compare_text_ODV_southsanfrancisco$In_SLV[compare_text_ODV_southsanfrancisco$In_SLV=="Yes"])/length(compare_text_ODV_southsanfrancisco$In_SLV),
                                            length(compare_text_ODV_visalia$In_SLV[compare_text_ODV_visalia$In_SLV=="Yes"])/length(compare_text_ODV_visalia$In_SLV),
                                            length(compare_text_ODV_santarosa$In_SLV[compare_text_ODV_santarosa$In_SLV=="Yes"])/length(compare_text_ODV_santarosa$In_SLV)),
                               Recall = c(length(compare_text_SLV_chulavista$In_ODV[compare_text_SLV_chulavista$In_ODV=="Yes"])/length(compare_text_SLV_chulavista$In_ODV),
                                          length(compare_text_SLV_temecula$In_ODV[compare_text_SLV_temecula$In_ODV=="Yes"])/length(compare_text_SLV_temecula$In_ODV),
                                          length(compare_text_SLV_southsanfrancisco$In_ODV[compare_text_SLV_southsanfrancisco$In_ODV=="Yes"])/length(compare_text_SLV_southsanfrancisco$In_ODV),
                                          length(compare_text_SLV_visalia$In_ODV[compare_text_SLV_visalia$In_ODV=="Yes"])/length(compare_text_SLV_visalia$In_ODV),
                                          length(compare_text_SLV_santarosa$In_ODV[compare_text_SLV_santarosa$In_ODV=="Yes"])/length(compare_text_SLV_santarosa$In_ODV)),
                               TP = c(length(compare_text_SLV_chulavista$In_ODV[compare_text_SLV_chulavista$In_ODV=="Yes"]),
                                      length(compare_text_SLV_temecula$In_ODV[compare_text_SLV_temecula$In_ODV=="Yes"]),
                                      length(compare_text_SLV_southsanfrancisco$In_ODV[compare_text_SLV_southsanfrancisco$In_ODV=="Yes"]),
                                      length(compare_text_SLV_visalia$In_ODV[compare_text_SLV_visalia$In_ODV=="Yes"]),
                                      length(compare_text_SLV_santarosa$In_ODV[compare_text_SLV_santarosa$In_ODV=="Yes"])),
                               FN = c(length(compare_text_SLV_chulavista$In_ODV) - length(compare_text_SLV_chulavista$In_ODV[compare_text_SLV_chulavista$In_ODV=="Yes"]),
                                      length(compare_text_SLV_temecula$In_ODV) - length(compare_text_SLV_temecula$In_ODV[compare_text_SLV_temecula$In_ODV=="Yes"]),
                                      length(compare_text_SLV_southsanfrancisco$In_ODV) - length(compare_text_SLV_southsanfrancisco$In_ODV[compare_text_SLV_southsanfrancisco$In_ODV=="Yes"]),
                                      length(compare_text_SLV_visalia$In_ODV) - length(compare_text_SLV_visalia$In_ODV[compare_text_SLV_visalia$In_ODV=="Yes"]),
                                      length(compare_text_SLV_santarosa$In_ODV) - length(compare_text_SLV_santarosa$In_ODV[compare_text_SLV_santarosa$In_ODV=="Yes"])),
                               FP = c(length(compare_text_ODV_chulavista$In_SLV[compare_text_ODV_chulavista$In_SLV=="No"]),
                                      length(compare_text_ODV_temecula$In_SLV[compare_text_ODV_temecula$In_SLV=="No"]),
                                      length(compare_text_ODV_southsanfrancisco$In_SLV[compare_text_ODV_southsanfrancisco$In_SLV=="No"]),
                                      length(compare_text_ODV_visalia$In_SLV[compare_text_ODV_visalia$In_SLV=="No"]),
                                      length(compare_text_ODV_santarosa$In_SLV[compare_text_ODV_santarosa$In_SLV=="No"])),
                               Correlation = c(0.98,0.89,0.91,0.73,0.77),
                               OD_Precision = c(78.0,72.1,86.1,76.3,65.0))

#### OCR Tests/Textual Similarity ####
# Chula Vista
# Load word comparison file
compare_words_ODV_chulavista<- read_xlsx(path="Step 6/Manuscript Data/Chula Vista Compare Text ODV.xlsx")
# Keep only matched items
compare_words_ODV_chulavista <- compare_words_ODV_chulavista[!is.na(compare_words_ODV_chulavista$SLV_text),]

# Calculate lexical similarity metrics
compare_words_ODV_chulavista$similarity_cosine <- stringsim(compare_words_ODV_chulavista$ODV_text,compare_words_ODV_chulavista$SLV_text, method="cosine")
mean(compare_words_ODV_chulavista$similarity_cosine)
compare_words_ODV_chulavista$similarity_jaccard <- stringsim(compare_words_ODV_chulavista$ODV_text,compare_words_ODV_chulavista$SLV_text, method="jaccard")
mean(compare_words_ODV_chulavista$similarity_jaccard)
compare_words_ODV_chulavista$similarity_leven <- stringsim(compare_words_ODV_chulavista$ODV_text,compare_words_ODV_chulavista$SLV_text, method="lv")
mean(compare_words_ODV_chulavista$similarity_leven)

# Santa Rosa
# Load word comparison file
compare_words_ODV_santarosa<- read_xlsx(path="Step 6/Manuscript Data/Santa Rosa Compare Words ODV.xlsx")
# Keep only matched items
compare_words_ODV_santarosa <- compare_words_ODV_santarosa[!is.na(compare_words_ODV_santarosa$SLV_text),]

# Calculate lexical similarity metrics
compare_words_ODV_santarosa$similarity_cosine <- stringsim(compare_words_ODV_santarosa$ODV_text,compare_words_ODV_santarosa$SLV_text, method="cosine")
mean(compare_words_ODV_santarosa$similarity_cosine)
compare_words_ODV_santarosa$similarity_jaccard <- stringsim(compare_words_ODV_santarosa$ODV_text,compare_words_ODV_santarosa$SLV_text, method="jaccard")
mean(compare_words_ODV_santarosa$similarity_jaccard)
compare_words_ODV_santarosa$similarity_leven <- stringsim(compare_words_ODV_santarosa$ODV_text,compare_words_ODV_santarosa$SLV_text, method="lv")
mean(compare_words_ODV_santarosa$similarity_leven)

# South San Francisco
# Load word comparison file
compare_words_ODV_southsanfrancisco<- read_xlsx(path="Step 6/Manuscript Data/South San Francisco Compare Words ODV.xlsx")
# Keep only matched items
compare_words_ODV_southsanfrancisco <- compare_words_ODV_southsanfrancisco[!is.na(compare_words_ODV_southsanfrancisco$SLV_text),]

# Calculate lexical similarity metrics
compare_words_ODV_southsanfrancisco$similarity_cosine <- stringsim(compare_words_ODV_southsanfrancisco$ODV_text,compare_words_ODV_southsanfrancisco$SLV_text, method="cosine")
mean(compare_words_ODV_southsanfrancisco$similarity_cosine)
compare_words_ODV_southsanfrancisco$similarity_jaccard <- stringsim(compare_words_ODV_southsanfrancisco$ODV_text,compare_words_ODV_southsanfrancisco$SLV_text, method="jaccard")
mean(compare_words_ODV_southsanfrancisco$similarity_jaccard)
compare_words_ODV_southsanfrancisco$similarity_leven <- stringsim(compare_words_ODV_southsanfrancisco$ODV_text,compare_words_ODV_southsanfrancisco$SLV_text, method="lv")
mean(compare_words_ODV_southsanfrancisco$similarity_leven)

# Temecula
# Load word comparison file
compare_words_ODV_temecula<- read_xlsx(path="Step 6/Manuscript Data/Temecula Compare Words ODV.xlsx")
# Keep only matched items
compare_words_ODV_temecula <- compare_words_ODV_temecula[!is.na(compare_words_ODV_temecula$SLV_text),]

# Calculate lexical similarity metrics
compare_words_ODV_temecula$similarity_cosine <- stringsim(compare_words_ODV_temecula$ODV_text,compare_words_ODV_temecula$SLV_text, method="cosine")
mean(compare_words_ODV_temecula$similarity_cosine)
compare_words_ODV_temecula$similarity_jaccard <- stringsim(compare_words_ODV_temecula$ODV_text,compare_words_ODV_temecula$SLV_text, method="jaccard")
mean(compare_words_ODV_temecula$similarity_jaccard)
compare_words_ODV_temecula$similarity_leven <- stringsim(compare_words_ODV_temecula$ODV_text,compare_words_ODV_temecula$SLV_text, method="lv")
mean(compare_words_ODV_temecula$similarity_leven)

# Visalia
# Load word comparison file
compare_words_ODV_visalia<- read_xlsx(path="Step 6/Manuscript Data/Visalia Compare Words ODV.xlsx")
# Keep only matched items
compare_words_ODV_visalia <- compare_words_ODV_visalia[!is.na(compare_words_ODV_visalia$SLV_text),]

# Calculate lexical similarity metrics
compare_words_ODV_visalia$similarity_cosine <- stringsim(compare_words_ODV_visalia$ODV_text,compare_words_ODV_visalia$SLV_text, method="cosine")
mean(compare_words_ODV_visalia$similarity_cosine)
compare_words_ODV_visalia$similarity_jaccard <- stringsim(compare_words_ODV_visalia$ODV_text,compare_words_ODV_visalia$SLV_text, method="jaccard")
mean(compare_words_ODV_visalia$similarity_jaccard)
compare_words_ODV_visalia$similarity_leven <- stringsim(compare_words_ODV_visalia$ODV_text,compare_words_ODV_visalia$SLV_text, method="lv")
mean(compare_words_ODV_visalia$similarity_leven)

# Combine metrics from above together
compare_text_all$similarity_jaccard <- c(mean(compare_words_ODV_chulavista$similarity_jaccard),
                                         mean(compare_words_ODV_temecula$similarity_jaccard),
                                         mean(compare_words_ODV_southsanfrancisco$similarity_jaccard),
                                         mean(compare_words_ODV_visalia$similarity_jaccard),
                                         mean(compare_words_ODV_santarosa$similarity_jaccard))

compare_text_all$similarity_cosine <- c(mean(compare_words_ODV_chulavista$similarity_cosine),
                                        mean(compare_words_ODV_temecula$similarity_cosine),
                                        mean(compare_words_ODV_southsanfrancisco$similarity_cosine),
                                        mean(compare_words_ODV_visalia$similarity_cosine),
                                        mean(compare_words_ODV_santarosa$similarity_cosine))

compare_text_all$similarity_leven <- c(mean(compare_words_ODV_chulavista$similarity_leven),
                                       mean(compare_words_ODV_temecula$similarity_leven),
                                       mean(compare_words_ODV_southsanfrancisco$similarity_leven),
                                       mean(compare_words_ODV_visalia$similarity_leven),
                                       mean(compare_words_ODV_santarosa$similarity_leven))

#### Hand Coded Items ####
# Visalia
# Load comparison file for by hand agenda items
compare_text_hand_visalia<- read_xlsx(path="Step 6/Manuscript Data/Visalia Compare Text Hand.xlsx")
# Merge with other comparison files
visalia_hand_compare <- merge(compare_text_hand_visalia,compare_text_ODV_visalia,by=c("date","ODV_text"),all=T)
visalia_hand_compare <- merge(visalia_hand_compare,compare_text_SLV_visalia,by=c("date","SLV_text"),all=T)

# Group values by date and summarize
visalia_hand_count <- compare_text_hand_visalia[,1:2] %>%
  group_by(date) %>%
  summarise(Items = n())

visalia_hand_count$type <- "Hand"
visalia_hand_count$city <- "Visalia"

# merge hand and slv/odv count versions
visalia_count <- rbind(visalia_hand_count,Visalia[Visalia$date %in% visalia_hand_count$date,])

# Temecula
# Load comparison file for by hand agenda items
compare_text_hand_temecula<- read_xlsx(path="Step 6/Manuscript Data/Temecula Compare Text Hand.xlsx")
# Merge with other comparison files
temecula_hand_compare <- merge(compare_text_hand_temecula,compare_text_ODV_temecula[,1:4],by=c("date","ODV_text"),all=T)
temecula_hand_compare <- merge(temecula_hand_compare,compare_text_SLV_temecula,by=c("date","SLV_text"),all=T)

# Group values by date and summarize
temecula_hand_count <- compare_text_hand_temecula[,1:2] %>%
  group_by(date) %>%
  summarise(Items = n())

temecula_hand_count$type <- "Hand"
temecula_hand_count$city <- "Temecula"

# merge hand and slv/odv count version
temecula_count <- rbind(temecula_hand_count,Temecula[Temecula$date %in% temecula_hand_count$date,])

# Santa Rosa
# Load comparison file for by hand agenda items
compare_text_hand_santarosa<- read_xlsx(path="Step 6/Manuscript Data/Santa Rosa Compare Text Hand.xlsx")
# Merge with other comparison files
santarosa_hand_compare <- merge(compare_text_hand_santarosa,compare_text_ODV_santarosa,by=c("date","ODV_text"),all=T)
santarosa_hand_compare <- merge(santarosa_hand_compare,compare_text_SLV_santarosa,by=c("date","SLV_text"),all=T)

# Group values by date and summarize
santarosa_hand_count <- compare_text_hand_santarosa[,1:2] %>%
  group_by(date) %>%
  summarise(Items = n())

santarosa_hand_count$type <- "Hand"
santarosa_hand_count$city <- "Santa Rosa"

# merge hand and slv/odv count version
santarosa_count <- rbind(santarosa_hand_count,SantaRosa[SantaRosa$date %in% santarosa_hand_count$date,])

# South San Francisco
# Load comparison file for by hand agenda items
compare_text_hand_southsanfrancisco<- read_xlsx(path="Step 6/Manuscript Data/South San Francisco Compare Text Hand.xlsx")
# Merge with other comparison files
southsanfrancisco_hand_compare <- merge(compare_text_hand_southsanfrancisco,compare_text_ODV_southsanfrancisco,by=c("date","ODV_text"),all=T)
southsanfrancisco_hand_compare <- merge(southsanfrancisco_hand_compare,compare_text_SLV_southsanfrancisco,by=c("date","SLV_text"),all=T)

# Group values by date and summarize
southsanfrancisco_hand_count <- compare_text_hand_southsanfrancisco[,1:2] %>%
  group_by(date) %>%
  summarise(Items = n())

southsanfrancisco_hand_count$type <- "Hand"
southsanfrancisco_hand_count$city <- "South San Francisco"

# merge hand and slv/odv count version
southsanfrancisco_count <- rbind(southsanfrancisco_hand_count,SouthSanFrancisco[SouthSanFrancisco$date %in% southsanfrancisco_hand_count$date,])

# Chula Vista
# Load comparison file for by hand agenda items
compare_text_hand_chulavista<- read_xlsx(path="Step 6/Manuscript Data/Chula Vista Compare Text Hand.xlsx")
# Merge with other comparison files
chulavista_hand_compare <- merge(compare_text_hand_chulavista,compare_text_ODV_chulavista,by=c("date","ODV_text"),all=T)

# Group values by date and summarize
chulavista_hand_count <- compare_text_hand_chulavista[,1:2] %>%
  group_by(date) %>%
  summarise(Items = n())

chulavista_hand_count$type <- "Hand"
chulavista_hand_count$city <- "Chula Vista"

# merge hand and slv/odv count version
chulavista_count <- rbind(chulavista_hand_count,ChulaVista[ChulaVista$date %in% chulavista_hand_count$date,])

#### Compare Three Collection Methods ####
# Bind across cities
merge_final_hand <- rbind(southsanfrancisco_count,santarosa_count,visalia_count,temecula_count,chulavista_count)

# Create dataframe of the correlations across all three methods across all five cities
dat_text_hand <- data.frame(ODV_SLV = c(round(cor(merge_final_hand$Items[merge_final_hand$city=="Santa Rosa" & merge_final_hand$type=="ODV"],
                                                  merge_final_hand$Items[merge_final_hand$city=="Santa Rosa" & merge_final_hand$type=="SLV"]),2),
                                        round(cor(merge_final_hand$Items[merge_final_hand$city=="Temecula" & merge_final_hand$type=="ODV"],
                                                  merge_final_hand$Items[merge_final_hand$city=="Temecula" & merge_final_hand$type=="SLV"]),2),
                                        round(cor(merge_final_hand$Items[merge_final_hand$city=="Chula Vista" & merge_final_hand$type=="ODV"],
                                                  merge_final_hand$Items[merge_final_hand$city=="Chula Vista" & merge_final_hand$type=="SLV"]),2),
                                        round(cor(merge_final_hand$Items[merge_final_hand$city=="South San Francisco" & merge_final_hand$type=="ODV"],
                                                  merge_final_hand$Items[merge_final_hand$city=="South San Francisco" & merge_final_hand$type=="SLV"]),2),
                                        round(cor(merge_final_hand$Items[merge_final_hand$city=="Visalia" & merge_final_hand$type=="ODV"],
                                                  merge_final_hand$Items[merge_final_hand$city=="Visalia" & merge_final_hand$type=="SLV"]),2)),
                            ODV_Hand = c(round(cor(merge_final_hand$Items[merge_final_hand$city=="Santa Rosa" & merge_final_hand$type=="ODV"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Santa Rosa" & merge_final_hand$type=="Hand"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="Temecula" & merge_final_hand$type=="ODV"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Temecula" & merge_final_hand$type=="Hand"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="Chula Vista" & merge_final_hand$type=="ODV"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Chula Vista" & merge_final_hand$type=="Hand"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="South San Francisco" & merge_final_hand$type=="ODV"],
                                                   merge_final_hand$Items[merge_final_hand$city=="South San Francisco" & merge_final_hand$type=="Hand"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="Visalia" & merge_final_hand$type=="ODV"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Visalia" & merge_final_hand$type=="Hand"]),2)),
                            Hand_SLV = c(round(cor(merge_final_hand$Items[merge_final_hand$city=="Santa Rosa" & merge_final_hand$type=="Hand"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Santa Rosa" & merge_final_hand$type=="SLV"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="Temecula" & merge_final_hand$type=="Hand"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Temecula" & merge_final_hand$type=="SLV"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="Chula Vista" & merge_final_hand$type=="Hand"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Chula Vista" & merge_final_hand$type=="SLV"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="South San Francisco" & merge_final_hand$type=="Hand"],
                                                   merge_final_hand$Items[merge_final_hand$city=="South San Francisco" & merge_final_hand$type=="SLV"]),2),
                                         round(cor(merge_final_hand$Items[merge_final_hand$city=="Visalia" & merge_final_hand$type=="Hand"],
                                                   merge_final_hand$Items[merge_final_hand$city=="Visalia" & merge_final_hand$type=="SLV"]),2)),
                            city=c("Santa Rosa","Temecula","Chula Vista","South San Francisco","Visalia"))
# COnvert to date format
merge_final_hand$date <- as.Date(merge_final_hand$date)

#### Figure 2 ####
ggplot(merge_final_hand,aes(x = date, y = Items, group=type)) +
                          geom_smooth(aes(linetype=type),color="black",se=F) +
                          labs(title = "Number of Agenda Items Over Time (All Three Methods)",
                               x = "",
                               y = "Agenda Items") +
                          theme_bw()+facet_wrap(.~city,scales = "free_x",ncol=2)+
                          theme(axis.line = element_line(colour = "black"),
                                panel.grid.major = element_blank(),
                                panel.grid.minor = element_blank(),
                                panel.border = element_blank(),
                                panel.background = element_blank(),
                                axis.ticks.y = element_blank(),
                                axis.text=element_text(size=12,color="black"),
                                axis.title=element_text(size=18),
                                plot.title = element_text(size=18),
                                legend.text=element_text(size=14),
                                legend.position = "bottom",
                                legend.direction='vertical',
                                strip.text = element_text(size = 14),
                                strip.background = element_rect(colour="white", fill="white"))+
                          guides(linetype = guide_legend(title = ""))+
                          scale_linetype_manual(labels = c("Hand Coded","Object Detection Method", "Legistar Scraping Method"),values=c("solid","dotted","dashed")) +
                          scale_x_date()

# Save figure for main text and appendix
ggsave("Final Figures/Figure 2.png",width=10,height=6)
ggsave("Final Figures/Appendix Figure 8.png",width=10,height=6)

#### Table 1 ####

# Create table with just the lexical similarity scores and one accuracy measure
table1 <- compare_text_all[,c("City","Accuracy","similarity_jaccard","similarity_cosine","similarity_leven")]
colnames(table1) <- c("City","Precision","Jaccard Similarity","Cosine Similarity","Levenshtein Distance")

# Round numbers
table1[,-1] <- round(table1[,-1],2)

# Save table for main text and appendix
gt(table1) %>%
  gtsave("Final Figures/Table 1.png")

gt(table1) %>%
  gtsave("Final Figures/Appendix Table 1.png")
